t = db.jstests_js8;
t.drop();

t.save( { a : 1 , b : [ 2 , 3 , 4 ] } );

assert.eq( 1 , t.find().length() , "A" );
assert.eq( 1 , t.find( function(){ return this.a == 1; } ).length() , "B" );
assert.eq( 1 , t.find( function(){ if ( ! this.b.length ) return true; return this.b.length == 3; } ).length() , "B2" );
assert.eq( 1 , t.find( function(){ return this.b[0] == 2; } ).length() , "C" );
assert.eq( 0 , t.find( function(){ return this.b[0] == 3; } ).length() , "D" );
assert.eq( 1 , t.find( function(){ return this.b[1] == 3; } ).length() , "E" );


assert(t.validate().valid);
